package com.atguigu.spring6;

import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * TestUser类用于测试User对象的功能
 * 通过Spring框架的ApplicationContext接口来获取由Spring管理的User对象实例
 */
public class TestUser {
private Logger logger= LoggerFactory.getLogger(TestUser.class);
    /**
     * 测试User对象的方法
     * 此方法通过Spring容器获取User对象，并调用其add方法来验证功能是否正常
     */
    @Test
    public void testUserObject() {
        //加载spring配置文件，对象创建
        ApplicationContext context =
                new ClassPathXmlApplicationContext("bean.xml");
        //获取创建的对象
        User user = (User) context.getBean("user");
        System.out.println("1:" + user);
        //使用对象调用方法进行测试
        System.out.print("2:");
        user.add();
        //手动写日志
        logger.info("### 执行调用成功了");
    }

    /**
     * 使用反射创建User对象的方法
     * 此方法通过反射机制创建User对象，以验证对象的创建和初始化是否正确
     * @throws Exception 如果反射机制在创建对象过程中遇到问题，则抛出异常
     */
    @Test
    public void testUserObject1() throws Exception {
        //获取类Class对象
        Class clazz=Class.forName("com.atguigu.spring6.User");
        //使用反射创建User对象
        User user=(User) clazz.getDeclaredConstructor().newInstance();
        System.out.println( "1:"+user);
    }
}
